#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# @Date : 2024/4/7 14:16
# @Author : water
# @Description : 匿名函数

"""
Python lambda（匿名函数）
    Python 使用 lambda 来创建匿名函数。
    lambda 函数是一种小型、匿名的、内联函数，它可以具有任意数量的参数，但只能有一个表达式。
    匿名函数不需要使用 def 关键字定义完整函数。
    lambda 函数通常用于编写简单的、单行的函数，通常在需要函数作为参数传递的情况下使用，例如在 map()、filter()、reduce() 等函数中。
    lambda 函数特点：
        lambda 函数是匿名的，它们没有函数名称，只能通过赋值给变量或作为参数传递给其他函数来使用。
        lambda 函数通常只包含一行代码，这使得它们适用于编写简单的函数。
        lambda 语法格式：
    lambda arguments: expression
        lambda是 Python 的关键字，用于定义 lambda 函数。
        arguments 是参数列表，可以包含零个或多个参数，但必须在冒号(:)前指定。
            lambda 函数也可以设置多个参数，参数使用逗号 , 隔开：
        expression 是一个表达式，用于计算并返回函数的结果。
注意：
    lambda 函数通常与内置函数如 map()、filter() 和 reduce() 一起使用，以便在集合上执行操作

"""
from functools import reduce

f = lambda a, b: a + b
print(f(1, 2))

# lambda 函数通常与内置函数如 map()、filter() 和 reduce() 一起使用，以便在集合上执行操作
l = [1, 2, 3, 4, 5]
print(list(map(lambda x: x * 2, l)))  # [2, 4, 6, 8, 10]

# 使用 lambda 函数与 filter() 一起，筛选偶数
print(list(filter(lambda x: x % 2 == 0, l)))

# 使用 reduce() 和 lambda 表达式演示如何计算一个序列的累积乘积
# 在下面的实例中，reduce() 函数通过遍历 l 列表，并使用 lambda 函数将累积的结果不断更新，最终得到了 1 * 2 * 3 * 4 * 5 = 120 的结果。
print(reduce(lambda x, y: x * y, l))
